Python3を使って、esaに記事を投稿する
サーモン大好き横山です。
今回は、markdownで情報共有出来るサービスの esa にPython3を使って、記事を投稿する小ネタをご紹介します。
Tokenの準備
APIを利用するためのTokenを取得します。
1.右上の自アイコンをクリック
2.Applicationsのタブをクリック
3.「Personal Access Token」の「Generate new token」をクリック
4.「Token Description」に適当な名称をいれ、Select scopeでRead/Write両方にチェックをいれて作成
5.Tokenが作成されるので、忘れずメモします。忘れた場合は再度作成から始めます。
esaに記事をPOSTする
公式サイトのv1 #noexpand を参考に作成していきます。 Tokenの使用方法は RequestのHeaderに入れる方法とURLにQuery Stringを使ってリクエストする方法2種類ありますが、今回はRequestのHeaderに入れる方法を紹介します。
venv環境を準備
venvの環境を作成し、 requests
をインストールします。
$ python3 -m venv venv $ . venv/bin/activate $ pip install requests
コード
TOKENには先程取得したTokenを設定します。また、TEAM_NAMEは投稿したいチーム名を記入してください。
#!/usr/bin/env python TOKEN = '11decxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd790' TEAM_NAME = 'チーム名' import requests from requests.auth import AuthBase import json class AuthEsa(AuthBase): def __call__(self, r): r.headers['Authorization'] = 'Bearer {}'.format(TOKEN) return r # requests instance session = requests.session() session.auth = AuthEsa() session.headers['Content-Type'] = 'application/json' api_endpoint = 'https://api.esa.io' # md md = """名前|食べたいもの --------|---------- 横山| サーモン 横山| かつお 横山| プリン """ # post body body = dict(post=dict(name="投稿テスト", body_md=md, category='hoge/fuga', wip=False)) # post resp = session.post('{}/v1/teams/{}/posts'.format(api_endpoint, TEAM_NAME), data=json.dumps(body).encode('utf-8')) print('response status: {}'.format(resp.status_code))
実行
$ python main.py response status: 201
まとめ
API経由でesaに投稿するスクリプトが簡単に作成することができました。
これを利用して日次、週次のエビデンスをesaに貼り付けるということも簡単にできそうです。